<a name="top"><h2>SO2SDR help file version 1.4.2</h2></a>
<hr>

<h3>Topics
<ol>
<li><a href="#building">Installing so2sdr</a>
<li><a href="#configuring">Configuring so2sdr</a>
<ol>
<li><a href="#station">Station settings</a>
<li><a href="#contest">Contest settings</a>
</ol>
<li><a href="#v142">current version notes</a> 
<li><a href="#opnotes">operating notes</a>
<li><a href="#keys">key reference</a>
<li><a href="#cw">CW macros</a>
</ol>
</h3>
<hr>

<a name="building"><h3>Installing SO2SDR: Linux</h3></a> 

Under Linux, so2sdr needs to be compiled from source.

You will need the following libraries installed: Qt4, FFTW, hamlib,
 and PortAudio.
These are available in most linux distributions.

<ol>
<li> Unpack source: tar xzvof so2sdr-xxx.tgz
<li> By default, so2sdr will be installed in /usr/local/bin, and associated
data files will be placed in /usr/local/share/so2sdr. If you want to
change the location of the program, edit SO2SDR_INSTALL_DIR in common.pri
<li> qmake
<li> make
<li> (as superuser) make install 
</ol>

<h3>Windows</h3>

<p>
Run the msi installer. All program and data 
files are in the chosen install directory,
no registry changes are made.
</p>

<a name="configuring"><h3>Configuring SO2SDR</h3></a> 

<p>
In so2sdr there are two types of configuration:
</p>
<ol>
<li> Station settings : These are settings that
do not generally change between different contests. These
include station hardware,
location, etc. Station settings are loaded as soon
as the program is run. These settings are stored 
in the so2sdr.ini file in the main configuration
directory for so2sdr (see below).
<li> Contest settings : These are settings specific
to each contest. They are only loaded once a contest
has been loaded from the File menu. They are stored
in .cfg files specific to each contest. Note that
in order to load a different contest, you must
exit and restart so2sdr.
</ol>


<a name="station"><h3>Station Settings</h3></a> 

<ol>
<li>
<h4>
User data directory
</h4>
<p>
The first time the program is run it will create a directory to store
user settings. The default location is ~/.so2sdr (Linux) or
 C:/Documents and Settings/Username/so2sdr (Windows).
</p>

<li>
<h4>
Station data
</h4>
<p>
The station dialog should be filled out next. It contains information
that usually does not change for different contests; this is
stored in the "so2sdr.ini" file in the user's directory. The
ini file is ASCII and can be edited by hand; be careful
making changes this way however.
</p>

<p>
<img src="station_dialog.png",Station Dialog>
</p>

<ul>
<li> The grid square should be 4 characters and
is used to determine beam headings from your qth and the sunrise/sunset
times for your qth. These will be updated once you have loaded
a contest.
<li> Name, zones, state, and ARRL section are used
to fill out default exchanges in various contests.
</ul>

<li>
<h4> Settings Dialog
</h4>

<p>
This dialog contains various settings that affect program
behavior.
</p>

<p>
<img src="settings_dialog.png",Settings Dialog>
</p>

<ul>
<li> Focus QSY Radio : switch audio focus to the second
radio while the other radio is sending.
<li> Audio and Transmit Focus Indicators : small "LED"
indicators that show the state of RX and TX focus.
<li> Send exchange and log (S/P) : In Search and Pounce
mode, if this setting is checked, the QSO will be immediately
logged after sending the exchange with the second Enter press.
If unchecked, an extra Enter is required after sending
the exchange to log the qso.
<li> Auto Send Mode : When running stations, if set to 
"Auto", the program will automatically begin sending
 the callsign entered and exchange once a certain number
of characters have been entered.
<li> Auto Send "Auto" Character Count : if using
Auto mode above, start sending when this number of
characters have been entered.
<li> Dueling CQ Delay : Duelling CQ between the two
radios is activated with Crtl- (Control Minus). This setting
adds an extra delay before switching radios.

</ul>

<li>
<h4>
Radio and SO2R switching setup
</h4>

<p>
<img src="radio_dialog.png",Radio/SO2R Dialog>
</p>

<ul>
<li> Radio control uses the Hamlib library. The current version
being used is shown at the top. Note that under Windows, this
version number may be incorrect if the Hamlib DLL files have been
switched.
<li> Tabs 1 and 2 are for the two radios. The "Dummy" model
can be used for testing when no radio is attached. Note that
the PTT method setting is not currently used.
<ul>
<li> Under Linux
serial ports are typically /dev/ttyS0, /dev/ttyS1, /dev/ttyUSB0, etc.
You may have to add your username to a particular group to access
these ports. Under Windows ports are COM1, COM2, ...
<li> When the radios are configured correctly, after
clicking "OK" in the radio dialog the "R1" and "R2"
indicators at the bottom of the main window
should say "ON" and turn black. Red here indicates a problem.
</ul>
<li> Three different methods are supported for switch audio
and keying between the two radios:
<ol>
<li> OTRSP : Open Two Radio Switching Protocol. This supports
USB-connected two-radio switches like the SO2RDuino box.
<li> Parallel port : This option toggles pins on the
parallel port. To use this in Linux, you need the PPDEV
kernel option, and your user name must be in the
correct group (usuall "lp") to access the port.
<li> microHam : The microHam series of SO2R switches.
</ol>
</ul>

<li>
<h4>
Winkey
</h4>

<p>
The only method supported to send CW currently
is via the Winkey chip. Note that winkey emulation
in a microHam box can be used.
<p>
<img src="winkey_dialog.png",Winkey Dialog>
</p>

<ul>
<li> CW Output : if unchecked, no CW will be outputed.
<li> Paddle sidetone : enables winkey sidetone only
when sending with the paddle.
<li> Swap : swaps dit/dah paddle connections.
<li> CT space : uses slightly reduced spaces between words.
<li> After clicking OK, the "WK" indicator at the bottom
of the main window should say "ON" and turn black. Red 
here indicates a problem.
<li> Iambic A/Iambic B/Ultimatic/Bug : choose paddle mode.
</ul>
</li>

<li>
<h4>
Bandscope settings
</h4>

<p>
A unique feature of SO2SDR is the SDR bandmap integrated with
the logging program. 
The program currently supports sound-card based I/Q
adapters like Softrocks and LP-PAN.
The Bandscope/DVK setup dialog is described below.
<p>
<img src="bandscope_dialog.png",Bandscope Dialog>
</p>
<ul>
<li> SO2SDR supports a separate bandscope for each radio. Each
requires a separate sound card capable of 96 KHz stereo sampling.
Note that most laptop sound cards do not have a stereo input
jack and cannot be used.
The following settings are needed for each bandscope:
<ol>
<li> Audio API : under Windows, several audio API's are available.
Under Linux only ALSA.
<li> device : choose the audio input device. The program
tests available devices to see if they support stereo
sampling and puts a check next to devices that may work.
<li> bits : bit resolution of the sound card.
<li> IF offset : used to make the center of the
bandscope match up to the radio frequency. For a K3/LP-PAN
combination, around 1000 Hz is correct here.
</ol>
<li> DVK settings : these are for a planned audio voice
keyer. Not currently available.
<li> Spot timeout : the length of time callsigns are displayed
on the bandmap. Callsigns are either entered by the 
operator or can be read from the telnet interface to
a dx spotting network.
<li> Change radios on click : if this setting is
enabled, clicking on a signal in either bandmap
will change the active radio and QSY to this frequency.
This can be used to search and pounce visually
across two separate bands.
<li> CQ Finder: one function of the bandscope is to 
find unused frequencies in order to call CQ. The program
records the location of all signals within a certain
time (integration time) and looks for the largest
open space between signals. This frequency
can be set using the BEST_CQ macro (see CW macros).
Settings controlling the CQ finder:
<ol>
<li> Integration time : this is set to the length
of a typical qso in the contest being operated. With 
longer exchanges (like in the ARRL Sweepstakes) a longer
time should be used here. Typically I use a value 
less than 30 seconds.
<li> Frequency limits : the program searches for 
open frequencies on each band between these limits.
Note that the bandscope itself only covers 96 KHz
and therefore may not cover the entire band in
question. In this case, the limit will be change to
reflect the frequency range actually 
covered by the bandscope.
</ol>
<li>
<p>
When  operating with the bandmap, you probably want to enable "Grab
keyboard" from the "Windows" menu, which will prevent the call
and exchange entry lines from losing keyboard focus.
</p>

<p>
 A similar option available
in Linux is "Borderless", which will also prevent clicks in the bandmap
from taking focus from the main window.
</p>
</ul>

</ol>


<a name="contest"><h3>Contest Settings</h3></a> 

<ol>
<li>
<p>
Starting a new contest: see File menu.
</p>

<p>
<img src="new_contest_dialog.png",New contest Dialog>
</p>

<ul>
<li> Start a new contest from the file menu. After choosing where to
save it, you can customize CW Messages and Contest Options.
If you have already operated this contest before, just make 
a copy of the ".cfg" file. This way you will not need to
reconfigure CW macros and other settings again.
<li> The list of contests known by so2sdr is in the "contest_list.dat"
file (in /usr/local/share/so2sdr/ under Linux, and in the
same directory as the executable under Windows). Each line of 
this file is of the format Displayed name, config file.
<li> Note that in some cases new contests can be easily added added to
this list if they have rules that are similar to existing
contests. You can create new contest by modifying an already existing
base config file. For example, both the NCCC Sprint and North American
Sprint use the built-in "SPRINT" rules, the only difference is in the
base config file (ns.cfg versus nasprint.cfg). The base config
file can for example then link to a different multiplier file.
</ul>

<li>

<p>
CW Macros
</p>

<p>
<img src="cw_messages.png",CW Messages Dialog>
</p>

<ul>
<li> Separate messages can be programmed
for the F1-F12 keys in CQ and S&P modes, as well as Ctrl and Shift modified
function keys. 
<li>
There are a number of special macros available, all of the form
{COMMAND}. In most cases I have set up a set of function
keys that works for my operating, although you might need
to adjust the exchange. Some special considerations:
<ul>
<li> CQ Func F1: this will be sent in CQ mode when pressing enter
<li> Exc Func F1: this should be your callsign ({CALL})
<li> Exc Func F2: this should be the contest exchange
<li> Other: several special messages for exchange sent while CQing,
etc.
</ul>
<li> See full list of available <a href="#cw">CW macros</a>.
</ul>

<li>

<p>
Contest options
</p>

<p>
<img src="contest_options.png",Contest options Dialog>
</p>

<p>
Most of these settings are set by default by the rules
of the contest  chosen. Be careful changing them.
</P>

<ul>
<li> Mults by band: if checked, mults count on each band. 
<li> Multimode : enable working multiple modes (not fully 
implemented)
<li> Show mode : show the mode of each qso in the onscreen log.
<li> Show mults: show multipliers in the large "Mults" box. In some
case this is not wanted, for example when there are a large number
of multipliers (CQ WPX for example).
<li> Sprint mode: special program logic for the NA Sprint.
<li> Supercheck partial: checking enables the
display of possible callsigns from the supercheck partial
database (http://ww.supercheckpartial.com). These files should
be placed in the program data directory (/usr/local/share/so2sdr under
Linux).
<li> Call history : if this is enabled, so2sdr will display
contest exchanges saved in a history database file. This file
is a SQLITE database file and can be edited/examined using a
number of programs (I use sqlitebrowser).
<li> Append Call history : append exchange history information
to the database file as qso's are logged. You can also import
them after a contest using the option under the File menu.
<li> Dupe behavior: three possible settings depending on
how strict you want to be with allowing dupes.
<li> Sent exchange: this will go in the Cabrillo file as the
send exchange columns. Note that
these entry boxes do not currently use the same macro system
used by the CW Messages, so entering {STATE} for example will
not work. Use "#" for a sent serial number.
<li> Off times : check this to enable automatic calculation 
of off time. You must fill in the start and end time/date
of the contest for this to work correctly.
</ul>
</ol>



<br>
<a href="#top">Return to top</a> 


<hr>


<a name="keys"><h3>Key reference</h3></a>

<ul>
<li> Radio QSY: enter a number corresponding to a frequency in
KHz in the callsign window. If the number is followed by a semicolon
(like 14005;), the frequency change will apply to the inactive radio.
<li> ctrl+Enter : logs qso with no dupe checking or exchange validation (be
careful). The qso may not be scored correctly.
<li> shift+Enter : logs qso without sending CW
<li> alt+Enter : start toggle mode. In this mode, each enter press toggles
back and forth between the two radios. Use this to call alternating cq's on
both radios.
<li> Backslash : log qso and send Quick QSL message
<li> PdDn : decrease CW speed
<li> PgUp : increase CW speed 
<li> ctrl+PdDn : decrease CW speed on inactive radio
<li> ctrl+PgUp : increase CW speed  on inactive radio
<li> alt+PgDn : in Auto CQ mode, decrease delay
<li> alt+PgUp : in Auto CQ mode, increase delay
<li> up/down arrow : switch between call and exchange windows
<li> ctrl+up : In S&P mode, tune to next higher detected signal on bandmap. 
In CQ mode  tune to the next higher signal on the INACTIVE radio.
<li> ctrl+down : In S&P mode, tune to next lower detected signal on bandmap. 
In CQ mode  tune to the next lower signal on the INACTIVE radio.
<li> ctrl+- : (Ctrl-Minus) Activates Dueling-CQ mode.
<li> alt+- : (Alt-Minus) Activates auto-send mode.
<li> Tab : enter S&P mode
<li> Esc : exit S&P mode; clear logging fields; reset Alt-D status
<li> minus (-) : mark frequency on active radio as a dupe, or clear
the current mark
<li> equals (=) : mark frequency on inactive radio as a dupe, or clear
the current mark
<li> left quote (`) : toggle audio stereo mode (split/non-split)
<li> alt+C : bring up Config menu
<li> alt+D : dupe check on 2nd radio
<li> ctrl+E : when QSO row is selected with the mouse, brings up
QSO edit dialog.
<li> alt+F : bring up File menu
<li> ctrl+F : search log for callsign fragment. ESC clears search results.
<li> alt+H : bring up Help menu
<li> alt+M : switch mult display mode
<li> ctrl+N : make a note
<li> alt+Q : start auto (repeating) CQ mode. While in Auto CQ, Alt-PageUp
and Alt-PageDn adjust the delay time between CQ's. Auto CQ sends F1 by default;
pressing F1 or F2 will change the message that is repeating. ESC or alt+Q
exits Auto CQ mode.
<li> alt+R : Switch radios
<li> ctrl+R : switch radios without killing cw.
<li> alt+S : Set CW speed. Followed by two numeric digits.
<li> ctrl+alt+S : take screenshot of main and bandmap windows.
Screenshot files are placed in the same directory as the log file.
<li> alt+W : bring up Windows menu
<li> ctrl+Z (in call/exchange entry field) : undo
</ul>


<br>
<a href="#top">Return to top</a> 

<hr>


<a name="cw"><h3>CW Message macros</h3></a>

<ul>
   <li> {CALL} :     callsign
   <li> {#} :        qso number
   <li> {UP} :       increase speed by 5 WPM
   <li> {DN} :       decrease speed by 5 WPM
   <li> {CANCEL} :   cancel any previous speed change
   <li> {R2} :       send on other radio
   <li> {R2CQ} :     send on other radio, marked as CQ. If a call is entered, program will switch to other radio to answer CQ. ESC or a F1 CQ will clear this state.
   <li> {STATE} :    state
   <li> {SECTION} :  ARRL section
   <li> {NAME} :     name
   <li> {CQZ} :      CQ zone
   <li> {ITUZ} :     ITU zone
   <li> {GRID} :     grid
   <li> {CALL_ENTERED} :  contents of call entry window
   <li> {TOGGLESTEREOPIN} :  toggle parallel port pin for audio control. This macro should be used alone and will not work with other CW macros
   <li> {CQMODE} :   switch to CQ mode
   <li> {SPMODE} :   switch to SP mode
   <li> {SWAP_RADIOS} :  swap frequencies between radios
  <li> {SWITCH_RADIOS} : same as alt-R
   <li> {REPEAT_LAST} :  repeats previously sent message
   <li> {REPEAT_NR} :  if the call entry line is not empty, send current qso #. If call entry line is empty, sends number sent for last logged qso.
  <LI> {CLEAR_RIT} : clear the RIT
<li> {RIG_FREQ} : send frequency of radio rounded to nearest KHz
<li> {RIG2_FREQ} : send frequency of 2nd radio rounded to nearest KHz
 <li> {BEST_CQ} qsy current radio to "best" CQ freq
 <li> {BEST_CQ_R2} qsy 2nd radio to "best" CQ freq
<li> | : insert 1/2 dit extra space
<li> {MCP}{/MCP} : send Microham Control Protocol commands
<li> {OTRSP}{/OTRSP} : send OTRSP Control Protocol commands
<li> {CAT}{/CAT} : send raw string to radio. This can be used
to trigger a variety of radio functions. Numbers placed inside of
< and > will be interpreted as hexadecimal bytes. Example: {CAT}SWT25;{/CAT}
will switch the RX antenna on the Elecraft K3.
<li> {CATR2}/{/CATR2} : same, except send to inactive radio
<li> {CAT1}/{/CAT1} : same, except send to radio 1
<li> {CAT2}/{/CAT2} : same, except send to radio 2
</ul>

<br>
<a href="#top">Return to top</a> 

<hr>

<a name="opnotes"><h3>Operating notes</h3></a>


<h3>Running stations</h3>


SO2SDR uses the "Enter sends message" approach used by many other logging programs:
<ol>
<li> Enter callsign, press enter. The CQ exchange is sent
<li> Enter exchange, press enter. The QSL message is sent
<li> repeat
</ol>

<p>
The program tries to be intelligent in interpreting the entered
exchange. There needs to be a space between exchange elements in
most cases (123a is acceptable in Sweepstakes for the number/prec).
In most cases, you do not need to backspace to correct
an exchange mistake- the program will take the last valid exchange
on the line.
</p>

<p>
That the exchange must be "validated", or enter will not log
the qso. In case there is a problem, it is possible to "force log"
the qso- press ctrl-Enter instead of just enter. Be careful with
these cases, the number and position of exchange elements has to
match exactly in this case. These qso's may also be scored
incorrectly
</p>

<p>
Shift-Enter instead of Enter will also log the qso without sending any CW.
</p>

<p>
The Backslash key ("\") will log the qso and send the "Quick QSL"
message instead of the usual QSL message.
</p>

<h3>S&P</h3>

TAB enters S&P mode.

<ol>
<li> type callsign. When enter is pressed, your call is sent
<li> enter exchange. When enter is pressed, you exchange is sent
<li> press enter again to log the qso. I am planning on making
this extra enter optional.
</ol>


<h3>Using the bandmap</h3>

In the bandmap, the radio frequency is in the center at the red
line. A right mouse click will bring up several options:

<ul>
<li> Zoom X1, Zoom X2: set scale of bandmap.
<li> Delete call: use to remove a call from the bandmap. Note that
the "-" and "=" keys can be used to remove a call.
<li> IQ Balance: open the IQ balance dialog. The bandmap uses strong
signals to correct gain and phase errors in the SDR hardware. 
This correction will be saved when quitting the program.
If the "IQ" box is checked, the correction is applied; if the "IQ Data"
box is checked, new signals are used to improve the correction.
</ul>

Options at the bottom of the bandmap window:
<ul>
<li> Mark signals: this uses a peak detection algorithm to
try to determine where signals are on the band. This does not decode
any CW. Each detected peak is marked with a small black dot; clicking
on it will tune the radio to that signal. Ctrl-up and Ctrl-down
arrows can be used to tune the radio to the next signal up or down the 
band. In S&P mode, they will tune the active radio; otherwise they apply to
the inactive radio.
<li> Signal level slider: adjusts sensitivity of peak detection 
algorithm.
<li> IQ: correct I-Q balance errors
<li> IQ Data: collect data from received signals to improve I-Q balance
<li> Click filter: removes key clicks. Not very effective at
the moment
</ul>

<p>
Left click: this will tune the radio to this frequency.
</p>

<p>
Left Click+drag in frequency scale: moves center of the display
</p>

<p>
When in S&P mode, pressing Space after typing a callsign will add
it to the bandmap. If the call is a dupe, it will be highlighted
in color on the bandmap. Using this trick, new signals become obvious
on the bandmap. It is of course possible that a station can be
replaced by another on exactly the same frequency. However, in practice
this does not happen very often--it is a much more probable that
unhighlighted signals are unworked stations. The Spot Timeout
setting is also critical here.
</p>


<h3>Editing log information</h3>

<p>
Previous qso's can be edited in the log window by clicking on 
a field, editing the information, and pressing enter. Pressing escape
instead cancels the changes. The following fields
are editable: time, callsign, sent exchange, and received exchange. The
qso points (if displayed for that contest) will be recalculated 
automatically. 
</p>

<p>
To search for a call (or partial call) in the log, enter a call
fragment in the callsign window and press ctrl-F. ESC clears the 
search results.
</p>

<p>
Marking qso's as invalid: there is no way to delete qso's from the
log. However, for each qso there is a checkbox. If this is unchecked, the
qso is marked as invalid and 
completely removed from dupe checking and scoring, and will not
appear in the final Cabrillo output.
</p>

<h3>SO2R</h3>

<p>
For working stations on a second band while CQing on a different
band SO2SDR uses a system similar to TRLOG:
</p>

<p>
<ol>
<li> Tune in a station on the second radio. By clicking on a
signal or using ctrl-up/down this is very easy to do.
<li> Press alt-D ; enter the callsign- it will show in the
2nd radio callsign window. The color is changed to indicate
this will be a second radio qso.
<li> When ready to call the station, hit Space. Now work
the station as usual. You may want to define function
keys to send messages on the other radio during the 2nd radio
qso.
<li> The program will return to the original radio when the
2nd radio qso is logged.
</ol>
</p>

<p>
Note that if you tune by a station you are sure you have worked,
you can use the "-" or "=" keys to mark that frequency as a dupe
without having to enter the whole callsign. This can save a lot
of typing and allow one to check a 2nd band for new stations
very quickly.
</p>

<hr>

<h3>Sprint/Sprint+SO2R</h3>

<p>
SO2SDR emulates the behavior of DOS TRLOG for the Sprint contest. This
behavior is enabled when the Contest Options->Sprint Mode is
checked. <i>Note that in sprint mode, alt-D is disabled. The method of
SO2R used for the sprint does not use alt-D.</i>
</p>

<p>
The Sprint is operated "backwards". This means that the <i>active</i>
radio is used to tune for stations (S&P), while the inactive radio is
used for calling CQ. I recommend reading the TRLOG description of
Sprint operating by N6TR, SO2SDR operates in the same manner.  The
default CW macros are set up in the way described below if North
American Sprint or NCCC Sprint is selected as a contest.
</p>

<p>
To do S&P, leave the active radio in <i>CQ mode</i>, not S&P mode. It
is helpful to open one bandmap, which will automatically follow the
active band. When you find a station you want to
call, type the call and simply hit Space.  The program will send your
call and switch to exchange mode. Copy the exchange and hit enter to
send your exchange. After the qso is logged, you will be back in CQ
mode, ready to send CQ when you press enter.
</p>

<p>
During the Sprint, the second radio is typically used to call CQ while you
are receiving the exchange on the active radio. This is set up by default 
in macros F7 and F8. For example, F7 should be defined something like:
</p>

<p>
{R2CQ}TEST {CALL}
</p>

<p>
Suppose 80M is the active radio (frequency in bold) and you call CQ on 40M.
The color of the second radio entry box changes color to remind you that a
2nd-radio CQ is in effect. If someone answers the CQ, enter their call in
<i>the 80M entry box</i>. Do not change radios first: when the 2nd
radio CQ is active, the program will take the call from the "wrong"
radio, transfer it to the new radio, and switch radios. Now you
continue as before.  During this qso you can again press F7 to call CQ
on 80M. If you have the bandmaps running, using the {BEST_CQ} or
{BEST_CQ_R2} macro is very helpful to quickly find an open frequency
to call CQ on in this situation.
</p>

<br>
<a href="#top">Return to top</a> 
<hr>

<a name="v142"><h3>Version 1.4.2</h3></a> 

<p>
New features:
</p>

<ul>
<li> New macro commands (CAT, CATR2, CAT1, CAT2) to send general string
 to serial port.
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v141"><h3>Version 1.4.1</h3></a> 

<p>
 New features:
</p>

<ul>
<li> Callsign history
<ul>
<li> To enable: define history file ("history.dat" or similar)
in Contest Options dialog. If this file does not exist, it 
will be created in the user's configuration directory. This
file is a SQLite database and can be edited with any 
SQLite tool.
<li> If "Call History" is checked in Contest Options, 
exchange fields for the current contest will be filled
in from the history file. Stored fields include
General, Domenstic Mult, Name, State, ARRL Section,
Grid, and Number. If different contests share the
same type of exchange field, different history
files must be used.
<li> If "Append Call History" is checked, exchanges from
stations worked will be added during the contest.
<li> The history can also be updated from a loaded log using
"Update History from Log" in the File menu. This can be
used to build up a history file from old logs.
</ul>
</ul>

<p>
Bug fixes:
</p>

<ul>
<li> The frequency range covered by the bandmap is now
shown in the bandmap title bar. When finding a clear 
frequency (BEST_CQ), if the frequency range chosen in the bandmap
options is outside the range actually covered, the upper
or lower limits will be adjusted.
<li> Fixed bug in CQWW scoring.
<li> Fixed rate display again.
<li> Bug fixes with AutoCQ.
<li> Fix crashing bug in Cabrillo import.
<li> Improved Alt-D: mult/needed QSO information
remains visible on second radio.
<li> Fix segfault when exiting program without loading contest.
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v140"><h3>Version 1.4.0</h3></a> 

<ul>
<li> Many new features added by NO3M
<ul>
<li> Dueling cq mode
<li> Auto cq mode
<li> ESM Toggle (Alt Enter) to switch between ESM states on two radios
<li> Transmit radio switching using either Winkey, parallel port, or OTRSP
<li> New general settings dialog
<li> Autosend
<li> RX and TX focus indicators
</ul>
<li> Bug fix in IQ balance plot; fit appears immediately. Increased averaging
     of data
<li> Fix handling of unchecked calls
<li> Correct default cq finder limits for 40m 
<li> Improve printout in telnet- remove non-printing characters correctly
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<hr>
<a name="v133"><h3>Version 1.3.3</h3></a> 

<ul>
<li> Fix bug in Sprint SO2R
<li> Add macro SWITCH_RADIOS; same as Alt-R
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<hr>
<a name="v132"><h3>Version 1.3.2</h3></a> 

<ul>
<li> Fix slow hamlib initialization under Windows
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<hr>

<a name="v131"><h3>Version 1.3.1</h3></a> 

<ul>
<li> Add support for two dupesheets. Note that the behavior will be
different if one or two dupesheets are open: if only one is open, it will
follow the band of the active radio.
<li> Add more documentation in Help about operating Sprint.
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<hr>
<a name="v130"><h3>Version 1.3.0</h3></a> 

<ul>
<li> Add support for  OTRSP (Open Two Radio Switching Protocol)
    devices. Tested with SO2RDUINO.
<li> Fixed bug in Sprint SO2R
<li> added ` key as additional control for audio stereo switching
<li> Add automatic off-time calculation
<li> Fixed ctrl-PgUp and ctrl-PgDn for second-radio cw speed change
<li> Started to add DVK code- this is not complete yet
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<a name="v125"><h3>Version 1.2.5</h3></a> 

<ul>
<li> Sweepstakes exchange fix
<li> Fix Cabrillo import
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v124"><h3>Version 1.2.4</h3></a> 

Merge version 1.2.3git:

<ul>
<li> Ctrl+Alt+S takes a screen shot of the main and bandmap windows
<li> Intial code to support multi-mode contests (not complete)
<li> Clean up some font inconsistencies
<li> Update CTY files, supercheck partial files
<li> Fix bug in alt-S setting of CW speed
<li> Fix Sweepstakes exchange parser
<li> change worked/needed mult display for contests where mults
count once (like Sweepstakes).
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v122"><h3>Version 1.2.2</h3></a> 

Merge version 1.2.2git:

<ul>
<li>exchange verification is now done in real-time
<li>add CA QSO party and KS qso party
<li>support for working mobiles in qso parties
<li>add new Ontario RAC sections
<li>fix baud rate setting bug in radio interface
<li>add CATEGORY-STATION to IARU cabrillo output
<li>improved editing of qso's:
  a) edit with double-click on log
  b) ctrl-E brings up new detailed qso edit
<li>fix bug with ESC and CW message dialog
<li>fix bugs with keyboard grab
<li>fix bug where exchange would be sent, but focus left
  on call box
<li>remove "About Qt" dialog. Add Qt version in "About So2sdr" dialog
<li>begin adding multi-mode capability. Multi-mode dupe checking not
  complete however.
<li>add option to show mode of qso in log
<li>correct some fonts in main window
<li>update manual
<li>slight change in size of main window
<li>update SCP and CTY files
<li>fix bug with DX stations in Field Day
<li>fix bug for KP2, KL7, etc stations in Field Day
<li>allow entry of fractional value for KHz ie 7003.5
<li>add prefix check to WPX
<li>update for g++ 4.7 compiler
<li>add 48x48 pixel icon
<li>use pkg-config library for unix builds
<li>support setting mode from call field: type "USB", "CW", etc
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<a name="v121"><h3>Version 1.2.1</h3></a> 

<ul>
<li> Can now log qso's on non-contest and VHF/UHF bands. These
will not show in the band breakdown however.
<li> More accurate bearings and sunrise/set times. If the stations'
zone is given in wl_cty.dat, the zone is used to estimate latitude
and longitude rather than the default entry for that country.
Depending on where the station is located in the zone and whether
CQ or ITU zones are bring used, the accuracy in the location will
vary. Note that entering your own call now gives your exact sunrise
and sunset (determined from your grid square).
<li> Fixed bug with sunrise/set and polar stations.
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v120"><h3>Version 1.2.0</h3></a> 

<ul>
<li> Major internal changes to log. Log (".log" file) is now
stored using SQLITE database:
<ul>
<li> Logs from older versions are not compatable: if you need to
open an older log, convert it to cabrillo first and then use 
"import cabrillo"
<li> Log is now editable during the contest. Time, callsign, and
exchange fields may be edited by clicking/double clicking on the
appropriate field; Enter accepts changes and pressing Escape reverts
them.
<li> QSO's can not be deleted once entered. However, unchecking the
check box on a qso will remove it from the scoring and cabrillo output.
<li> After a log edit the log is re-duped and the multiplier total and score
 is recalculated.
<li> To search for a call in the log enter a call (or partial call)
in the callsign window and press "ctrl-F". Search results that appear
can then be edited as above.
</ul>
<li> Bandmap spots are saved to disk (file ".dat") when exiting
the program.
<li> Other bug fixes
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<a name="v1111"><h3>Version 1.1.11</h3></a> 

<ul>
<li> Fix problems with Windows build
<li> Check to create user directory before checking hamlib backends
<li> Updates to some default contests config files
<li> change escape behavior during alt-D
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v1110"><h3>Version 1.1.10</h3></a> 

<ul>
<li> Fix (I think) bug causing crash when rig keyed with paddle
and only 1 bandmap active
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v119"><h3>Version 1.1.9</h3></a> 

<ul>
<li> new feature in bandmap: dragging on frequency label field will
move the central frequency
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v118"><h3>Version 1.1.8</h3></a> 

<ul>
<li>switch to Portaudio callback API. DSound API (and maybe others)
should now work in Windows
<li>each audio device marked with a check if it supports the
required sample rate and format
<li>simplify Portaudio error message popup windows
<li>show ASIO control panel if an ASIO device is selected
<li>{CLEAR_RIT} works at least with Elecraft radios
</ul>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v116"><h3>Version 1.1.6</h3></a> 

<ul>
<li>update MASTER.DTA and CTY files
<li>add highlight showing bands in use to breakdown
<li>fix bugs with exchange prefill
<li>fix bugs in IARU contest
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<a name="v112"><h3>Version 1.1.3</h3></a> 

<p>
More bug fixes: see CHANGES file.
</p>

<p>
Note that you probably will not be able to use the {CLEAR_RIT} macro:
in hamlib there is currently no way to clear the RIT without turning it
off completely.
</p>

<p>
<a href="#top">Return to top</a> 
</p>
<a name="v112"><h3>Version 1.1.2</h3></a> 

<p>
Bugfix release.
</p>

<p>
<a href="#top">Return to top</a> 
</p>


<a name="v110"><h3>Version 1.1.0</h3></a> 

<p>Changes:</p>

<ul>
<li> Now uses hamlib for radio control, so any radio supported by hamlib should
work. Note that for correct K3 support, a relatively recent (at least 1.2.xx)
version is needed. Older versions do not support needed K3 features. I do not
know how well other radios will work.
<li> Under linux, parallel port support now uses the kernel module PPDEV and
/dev/parport0, etc. The program no longer needs to be setuid root, but
you must be in the lp group.
<li> Major changes in the multi-threaded aspects of the program. Threads
were not functioning correctly before.
<li> Ok/Cancel should function correctly in setup dialogs.
<li> Transmit status now determined from winkey rather than polling
radio.
</ul>

<p>
<a href="#top">Return to top</a> 
</p>

<a name="v100"><h3>Version 1.0.0</h3></a> 

<p>Supported hardware:</p>

<p>Radios:</p>
<ul>
<li>Elecraft K2
<li>Elecraft K3
</ul>

<p>SDR bandscope:</p>
<ul>
<li>I/Q soundcard based (Softrock, LP-PAN, etc)
</ul>

<p>Miscellaneous:</p>
<ul>
<li> Winkey
<li> headphone, radio switching: parallel port
</ul>

<p>
Issues and limitations:
</p>
<ul>
<li> log is not editable; make a note (Ctrl+N) if a qso is logged
incorrectly and fix it in the cabrillo
<li> After opening a contest config file, you must exit and
restart so2sdr before opening another contest 
<li> bandmap entries are not saved when quitting the program
<li> key click filter is not very effective
<li> Linux: the program is setuid root to enable parallel port
access. Root access is dropped after the parallel port is opened,
so the port choice can't be changed later.
<li> Windows: only MME soundcard API is working
<li> some issues with keyboard focus when opening menus; may need to
disable keyboard grab when changing cw messages or other settings
<li> support for SSB is limited
<li> sunrise/sunset times shown are computed from the latitude
and longitude listed in wl_cty.dat. They are not very accurate for
large countries.
<li> no multi-operator support
<li> external packetclusters can be connected to; due to the limited
frequency resolution in packetcluster spots 
and frequency errors, this does not work very
well for highlighting stations on the bandmap
<li> probably lots of bugs...
</ul>
<a href="#top">Return to top</a> 


